From: Matthias Clasen Date: Sun, 12 Dec 2021 23:01:50 +0000 (-0500) Subject: inspector: Show more datatypes for the clipboard X-Git-Tag: archive/raspbian/4.6.5+ds-1+rpi1~1^2~91^2^2~66^2~1 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=dbe5e57b8e53da897d132ff76042cc033dc0a9dc;p=gtk4.git inspector: Show more datatypes for the clipboard It is easy enough to show colors, files and pixbufs. --- diff --git a/gtk/inspector/gtkdataviewer.c b/gtk/inspector/gtkdataviewer.c index acfafea88b..fd8154b4a8 100644 --- a/gtk/inspector/gtkdataviewer.c +++ b/gtk/inspector/gtkdataviewer.c @@ -24,6 +24,9 @@ #include "gtkbinlayout.h" #include "gtklabel.h" #include "gtkpicture.h" +#include "gtkcolorswatchprivate.h" +#include "gtkbox.h" + struct _GtkDataViewer { @@ -258,6 +261,47 @@ gtk_data_viewer_load_value (GtkDataViewer *self, gtk_widget_set_size_request (self->contents, 256, 256); gtk_widget_set_parent (self->contents, GTK_WIDGET (self)); } + else if (g_type_is_a (G_VALUE_TYPE (value), GDK_TYPE_PIXBUF)) + { + self->contents = gtk_picture_new_for_pixbuf (g_value_get_object (value)); + gtk_widget_set_size_request (self->contents, 256, 256); + gtk_widget_set_parent (self->contents, GTK_WIDGET (self)); + } + else if (g_type_is_a (G_VALUE_TYPE (value), GDK_TYPE_RGBA)) + { + const GdkRGBA *color = g_value_get_boxed (value); + + self->contents = gtk_color_swatch_new (); + gtk_color_swatch_set_rgba (GTK_COLOR_SWATCH (self->contents), color); + gtk_widget_set_size_request (self->contents, 48, 32); + gtk_widget_set_halign (self->contents, GTK_ALIGN_CENTER); + gtk_widget_set_parent (self->contents, GTK_WIDGET (self)); + } + else if (g_type_is_a (G_VALUE_TYPE (value), G_TYPE_FILE)) + { + GFile *file = g_value_get_object (value); + + self->contents = gtk_label_new (g_file_peek_path (file)); + gtk_label_set_ellipsize (GTK_LABEL (self->contents), PANGO_ELLIPSIZE_START); + gtk_widget_set_halign (self->contents, GTK_ALIGN_CENTER); + gtk_widget_set_parent (self->contents, GTK_WIDGET (self)); + } + else if (g_type_is_a (G_VALUE_TYPE (value), GDK_TYPE_FILE_LIST)) + { + GList *l; + + self->contents = gtk_box_new (GTK_ORIENTATION_VERTICAL, 10); + gtk_widget_set_parent (self->contents, GTK_WIDGET (self)); + + for (l = g_value_get_boxed (value); l; l = l->next) + { + GFile *file = l->data; + GtkWidget *label = gtk_label_new (g_file_peek_path (file)); + gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_START); + gtk_widget_set_halign (label, GTK_ALIGN_CENTER); + gtk_box_append (GTK_BOX (self->contents), label); + } + } else { gtk_data_viewer_load_error (self,